package org.dtrd.config.pay;

import cn.hutool.core.util.RandomUtil;
import org.dtrd.common.util.DateUtils;

import java.math.BigDecimal;

/**
 * 订单编号生成
 *
 * @author xiao
 * @date 2022/6/6 1:52 PM
 */
public final class OrderUtil {
    /**
     * 金额为分的格式
     */
    private static final String CURRENCY_FEN_REGEX = "\\-?[0-9]+";

    /**
     * 根据用户ID、订单类型与当前时间及随机数串共计18位
     *
     * @param userId
     * @param orderType
     * @return
     */
    public static String generateOrderNo(Integer userId, Integer orderType) {
        StringBuilder sb = new StringBuilder();
        sb.append(DateUtils.formatDate(DateUtils.short_date_sdf.get().toPattern())).append(userId).append(orderType);
        sb.append(RandomUtil.randomNumbers(18 - sb.length()));
        return sb.toString();
    }

    /**
     * 将分为单位的转换为元 （除100）
     *
     * @param amount
     * @return
     * @throws Exception
     */
    public static String changeF2Y(Long amount) {
        if (("" + amount).matches(CURRENCY_FEN_REGEX)) {
            return new BigDecimal(amount).divide(new BigDecimal(100)).toString();
        }
        return amount + "";
    }

    /**
     * 将元为单位的转换为分 （乘100）
     *
     * @param amount
     * @return
     */
    public static int changeY2F(Float amount) {
        return new BigDecimal(amount + "").multiply(new BigDecimal(100)).intValue();
    }

}
